/*
 * Copyright 2004-2005 asoft
 * 本软件及其所有拷贝的名称，与光盘上或本软件中注明的公司同在。
 * 本软件及文档享有版权，并受国家版权法及国际协约条款的保护。
 * 您不可以从本软件中去掉其版权声明；并保证为本软件的拷贝（本部或部分）* 复制版权声明。
 * 您同意制止以任何形式非法拷贝本软件及文档。
 * 版权信息参见：
 *      http://www.asoft.cn/licenses
 */

package com.asoft.common.base.web.service;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.springframework.orm.ObjectRetrievalFailureException;

import com.asoft.common.base.model.BaseObject;

/**
 * 新增、修改model服务模板
 *
 */

public class SaveOrUpdateModelTempletService extends TempletService
{
        static Logger logger = Logger.getLogger(SaveOrUpdateModelTempletService.class);

        public void executeService(HttpServletRequest request)
        {
                BaseObject bo = (BaseObject)request.getAttribute(this.manager.getEntityClass().getName());
                // 保存BaseObject
                this.manager.save(bo);
        }

        /**
         * 操作细节(for 操作日志)
         * 调用服务前
         */
        public String getDetailBeforeExe(HttpServletRequest request)
        {
                BaseObject newBO = (BaseObject)request.getAttribute(this.manager.getEntityClass().getName());
                BaseObject oldBO;
                try
                {
                        oldBO = (BaseObject)this.manager.get(newBO.getIdentity());
                }
                catch(ObjectRetrievalFailureException orfe)
                {
                        oldBO = null;
                }
                catch(IllegalArgumentException iare)
                {
                        oldBO = null;
                }
                if(oldBO == null)
                {
                        logger.info("新增服务");
                        StringBuffer sb = new StringBuffer(1000);
                        sb.append("<new>").append(newBO.getModelDetailXML()).append("</new>");
                        return sb.toString();
                }
                else
                {
                        logger.info("修改服务");
                        StringBuffer sb = new StringBuffer(1000);
                        sb.append("<old>").append(oldBO.getModelDetailXML()).append("</old>");
                        sb.append("<new>").append(newBO.getModelDetailXML()).append("</new>");
                        return sb.toString();
                }
        }

        /**
         * 操作细节(for 操作日志)
         * 调用服务后
         */
        public String getDetailAfterExe(HttpServletRequest request)
        {
                return "";
        }
}
